package web.suzy.oj.dao.user;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import web.suzy.oj.pojo.entity.user.SysRole;
import web.suzy.oj.pojo.entity.user.SysUserRole;
import web.suzy.oj.pojo.vo.SysUserRoleVO;

import java.util.List;

/**
 * YangSuzy 软件工作室
 * 类名: SysUserRoleEntityService
 * 描述: 用户角色表实体 dao层服务
 * 功能: ---- 待定 -----
 *
 * @author YangSuzy
 * Date: 2022/11/9 12:54
 */
public interface SysUserRoleEntityService extends IService<SysUserRole> {

    /**
     * 方法名: getUserRoles
     * 描述: 根据用户 UID或用户名获取用户信息以及其对应的角色
     *
     * @param uid      用户 UID
     * @param username 用户名
     * @return web.suzy.oj.pojo.vo.SysUserRoleVO
     * @date 2022/11/9 13:29
     * @auther YangSuzy
     **/
    SysUserRoleVO getUserRoles(String uid, String username);

    /**
     * 方法名: getRolesByUid
     * 描述: 根据用户 UID获取角色列表
     *
     * @param uid 用户 UID
     * @return java.util.List<web.suzy.oj.pojo.entity.user.SysRole>
     * @date 2022/11/9 13:30
     * @auther YangSuzy
     **/
    List<SysRole> getRolesByUid(String uid);

    /**
     * 方法名: getUserList
     * 描述: 根据关键字分页模糊查询获取用户信息列表
     *
     * @param limit       每页显示数量
     * @param currentPage 当前页
     * @param keyword     关键字
     * @param onlyAdmin   true-只查管理员 false-全查
     * @return com.baomidou.mybatisplus.core.metadata.IPage<web.suzy.oj.pojo.vo.SysUserRoleVO>
     * @date 2022/11/9 13:30
     * @auther YangSuzy
     **/
    IPage<SysUserRoleVO> getUserList(int limit, int currentPage, String keyword, Boolean onlyAdmin);

    /**
     * 方法名: deleteCache
     * 描述: 删除用户登录会话缓存
     *
     * @param uid             用户ID
     * @param isRemoveSession 是否强行删除登录会话
     * @return void
     * @date 2022/11/27 18:10
     * @auther YangSuzy
     **/
    void deleteCache(String uid, boolean isRemoveSession);

    /**
     * 方法名: getAuthChangeContent
     * 描述: 获取权限修改文本发送给用户
     *
     * @param oldType 旧权限
     * @param newType 新权限
     * @return java.lang.String
     * @date 2022/11/27 18:15
     * @auther YangSuzy
     **/
    String getAuthChangeContent(int oldType, int newType);
}
